
# Makefile内容通常由以下部分组成
# <目标>: <前置依赖>
#     <需要执行的命令>

# 放在第一个的是默认目标
# main目标依赖main.o和hello.o文件
# 编译的命令: gcc hello.o main.o -o main
main: hello.o main.o
	gcc main.o hello.o -o main 

# main.o目标依赖main.c hello.h
# 编译命令：gcc -c main.c
main.o: main.c hello.h
	gcc -c main.c -o main.o

# hello.o目标依赖hello.c hello.h
# 编译命令：gcc -c hello.c
hello.o: hello.c
	gcc -c hello.c -o hello.o

# clean目标不依赖任何文件
# 作用：清理编译的临时文件
clean:
	rm main main.o hello.o

# *.c => 预处理(*.i) => 编译(*.s 汇编源代码) => 汇编(*.o 单个机器码文件) => 链接(可执行文件)
# gcc -c main.c -o main.o  对c文件进行预处理、编译、汇编，生成单个机器码文件

# # 定义变量
# # objects := hello.o main.o
# # objects := hello.o \
# #     main.c
# objects := hello.o
# objects += main.c

# # 在目标中引入变量
# main: $(objects)
# 	gcc $(objects) -o main

# main.o: main.c hello.h
# 	gcc -c main.c

# hello.o: hello.c
# 	gcc -c hello.c

# # clean目标中也可以引入变量
# clean:
# 	rm main $(objects)
